package user

import user.Tutor;
import user.UserService;


description """Teste de aceitação referente a US3.
			Autenticação de usuários."""

before "cenários", {
	userService = new UserService();
	
	tutor = new Tutor(nome:"João", sobrenome:"Aleixo", email:"joao@email.com", pseudonimo:"joao", senha:"123456".encodeAsHash(), ingresso:new Date().parse("d/M/yyyy","21/3/2008"), titulacao:"Ninja")
	userService.save(tutor)
}

scenario "Usuário cadastrado autentica-se no sistema com dados válidos", {
	given "um login e senha válido", {
		login = "joao"
		senha = "123456"
	}
	
	when "for requisitado a autenticação", {
		result = userService.authenticate(login, senha)
	}
	
	then "será validado pelo sistema", {
		ensure(result) {
			isNotNull
		}
	}
}

scenario "Tentativa de autenticação de usuário no sistema com login inválido", {
	given "um login inválido e uma senha qualquer", {
		login = "joao2"
		senha = "123456"
	}
	
	when "for requisitado a autenticação", {
		result = userService.authenticate(login, senha)
	}
	
	then "será invalidado pelo sistema", {
		ensure(result) {
			isNull
		}
	}
}

scenario "Tentativa de autenticação de usuário no sistema com login válido e senha inválida", {
	given "um login válido e uma senha qualquer", {
		login = "joao"
		senha = "lalala"
	}
	
	when "for requisitado a autenticação", {
		result = userService.authenticate(login, senha)
	}
	
	then "será invalidado pelo sistema", {
		ensure(result) {
			isNull
		}
	}
}